Comando printf()


O que é printf em Java?


O printf é um método usado para imprimir texto formatado no console, ou sejam além de usar o print ou println o programador ainda tem a opção de utilizar o printf que traz algumas características. Ele vem da linguagem C, e significa "print formatted" (imprimir formatado).


Sintaxe básica


System.out.printf("texto com formatação desejado", variavel1, variavel2, variavel3);


O printf utiliza caracteres formatadores ( %s, %d .... ) que definem como os valores das variáveis devem ser exibidas bem como o seu formato.


Considere o código abaixo:


public class Main {
    public static void main(String[] args) {
        String nome = "Maria";
        int idade = 25;
        float peso = 85.6f;
        System.out.printf("Nome: %s Idade: %d Peso: %f \n", nome, idade, peso);
    }
}


O resultado impresso será:

Nome: Maria  Idade: 25


A primeira função do caractere de formatação é marcar a posição dentro do texto a ser formatado, em qual posição uma variável deverá ter o conteúdo inserido dentro da frase.

No caso do exemplo acima, o %s (formatador para string), determina que a variável nome, deverá ter o seu conteúdo impresso na posição onde se encontra o %s. Já o %d (formatador para inteiro) determina que a variavel idade deverá ter o seu conteúdo impresso na posição onde se econtra o %d. A mesma coisa ocorre com o %f (formatador para float).

Note que as variáveis são separadas com vírgulas, e terão o seu conteúdo inserido nas posições respectivas dos formatadores, ou seja, o primeiro formatador se relaciona com a primeira variável, o segundo formatador se relaciona com a segunda varíavel e assim sucessivamente.


Marcadores de formatação mais comuns:

Marcador    Tipo de dado                       Exemplo
%s          String (texto)                     "Maria"
%d          int (número inteiro)               25
%f          float/double (número decimal)      3.14
%.2f        decimal com 2 casas                3.14 (formata para 2 casas decimais)


Alinhamento de texto:


public class Main {
  public static void main(String[] args) {
      System.out.printf("+----------------------+----------+\n");
      System.out.printf("| %-20s | %10s\n", "Produto", "Valor |");
      System.out.printf("+----------------------+----------+\n");
      System.out.printf("| %-20s | %8.2f |\n", "Arroz", 6.78);
      System.out.printf("| %-20s | %8.2f |\n", "Feijao", 9.18);
      System.out.printf("| %-20s | %8.2f |\n", "Açucar", 4.28);
      System.out.printf("| %-20s | %8.2f |\n", "Café", 3.70);
      System.out.printf("+----------------------+----------+\n");
  }
}


%-20s → alinha à esquerda e ocupa 20 espaços.

%5.2f → alinha à direita com 5 espaços, e dois caracteres depois da vírgula.


Saída:

+----------------------+----------+
| Produto              |    Valor |
+----------------------+----------+
| Arroz                |     6.78 |
| Feijao               |     9.18 |
| Açucar               |     4.28 |
| Café                 |     3.70 |
+----------------------+----------+